﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Young3.FMSearch.Core.Entities.GameVersions;
using Young3.FMSearch.Core.Offsets;
using Young3.FMSearch.Core.Managers;
using Young3.FMSearch.Core.Attributes;

namespace Young3.FMSearch.Core.Entities.InGame
{
    //[FMType(UseCache = true)]
    public class StaffSkills : BaseObject
    {
        // Methods
        public StaffSkills(int memoryAddress, IVersion version)
            : base(memoryAddress, version)
        {
        }
        public StaffSkills(int memoryAddress, ArraySegment<byte> originalBytes, IVersion version)
            : base(memoryAddress, originalBytes, version)
        { }

        [FMEntityAttribute(StaffSkillOffsets.Business)]
        public SByte Business { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Interference)]
        public SByte Interference { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Patience)]
        public SByte Patience { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Resources)]
        public SByte Resources { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.CoachingAttacking)]
        public SByte CoachingAttacking { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.CoachingDefending)]
        public SByte CoachingDefending { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.CoachingFitness)]
        public SByte CoachingFitness { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.CoachingGoalkeepers)]
        public SByte CoachingGoalkeepers { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.CoachingMental)]
        public SByte CoachingMental { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.CoachingPlayer)]
        public SByte CoachingPlayer { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.CoachingTactical)]
        public SByte CoachingTactical { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.CoachingTechnical)]
        public SByte CoachingTechnical { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.ManManagement)]
        public SByte ManManagement { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.WorkingWithYoungsters)]
        public SByte WorkingWithYoungsters { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Adaptability)]
        public SByte Adaptability { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.JudgingPlayerAbility)]
        public SByte JudgingPlayerAbility { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.JudgingPlayerPotential)]
        public SByte JudgingPlayerPotential { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.LevelOfDiscipline)]
        public SByte LevelOfDiscipline { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Motivating)]
        public SByte Motivating { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Physiotherapy)]
        public SByte Physiotherapy { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.TacticalKnowledge)]
        public SByte TacticalKnowledge { get; set; }
 
        [FMEntityAttribute(StaffSkillOffsets.CoachAdaptability)]
        public SByte CoachAdaptability { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.CoachAmbition)]
        public SByte Ambition { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.CoachControversy)]
        public SByte Controversy { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Determination)]
        public SByte Determination { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.CoachLoyalty)]
        public SByte Loyalty { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.CoachPressure)]
        public SByte Pressure { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.CoachProfessionalism)]
        public SByte Professionalism { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.CoachSportsmanship)]
        public SByte Sportsmanship { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.BuyingPlayers)]
        public SByte BuyingPlayers { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.HardnessOfTraining)]
        public SByte HardnessOfTraining { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.MindGames)]
        public SByte MindGames { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.SquadRotation)]
        public SByte SquadRotation { get; set; }
 
        [FMEntityAttribute(StaffSkillOffsets.AssistantManager)]
        public SByte AssistantManager { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Coach)]
        public SByte Coach { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.FitnessCoach)]
        public SByte FitnessCoach { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.GoalkeepingCoach)]
        public SByte GoalkeepingCoach { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Manager)]
        public SByte Manager { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Physio)]
        public SByte Physio { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Scout)]
        public SByte Scout { get; set; }
   
        [FMEntityAttribute(StaffSkillOffsets.Attacking)]
        public SByte Attacking { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Depth)]
        public SByte Depth { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Directness)]
        public SByte Directness { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Flamboyancy)]
        public SByte Flamboyancy { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Flexibility)]
        public SByte Flexibility { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.FreeRoles)]
        public SByte FreeRoles { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.CoachMarking)]
        public SByte Marking { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.OffSide)]
        public SByte OffSide { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Pressing)]
        public SByte Pressing { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.SittingBack)]
        public SByte SittingBack { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Tempo)]
        public SByte Tempo { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.UseOfPlaymaker)]
        public SByte UseOfPlaymaker { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.UseOfSubstitutions)]
        public SByte UseOfSubstitutions { get; set; }

        [FMEntityAttribute(StaffSkillOffsets.Width)]
        public SByte Width { get; set; }
    }

}
